【コマンドライン】権限・パーミッションの変更 [ chmod ]
コマンドラインでファイルやディレクトリの権限(パーミッション)を変更するchmodコマンドについて解説します。
検証環境
chmodコマンド
chmodコマンドは“ファイルやディレクトリの権限(パーミッション)を変更するコマンド”です。
基本書式
$ chmod [オプション] [モード] [対象パス]
オプション
主なオプションは次の通りです。
オプション | 内容 |
---|---|
-R | ディレクトリ内のファイルやディレクトリも再帰的に変更 |
引数
モード
モード
は所有者、グループ、その他の権限です。
対象パス
対象パス
は権限を変更するファイルまたはディレクトリのパスです。
モードの書式
所有者、グループ、その他に対する読み込み、書き込み、実行の権限を表すモードの書式は2パターンあります。
アルファベット書式
対象(所有者・グループ・その他)と権限をアルファベットで指定する書式です
対象 操作 権限
ユーザー | アルファベット |
---|---|
所有者 | u |
グループ | g |
その他 | o |
全て | a |
操作 | アルファベット |
---|---|
追加 | + |
削除 | - |
権限 | アルファベット |
---|---|
読み込み | r |
書き込み | w |
実行 | x |
例えば、グループ(g
)に書き込み(w
)と実行(x
)の権限を追加(+
)する場合は次のようになります。
g+wx
もう1つ例を挙げます。
その他(o
)から全て(rwx
)の権限を削除(-
)する場合は次のようになります。
o-rwx
数字書式
対象(所有者、グループ、その他)の権限を3桁の数字で指定する書式です。
例えば次のような数字になります。
740
1文字目が所有者の権限、2文字目がグループの権限、3文字目がその他の権限です。
この数字は与える権限を数値化し、合算した値です。
権限 | 数値 |
---|---|
読み込み(r) | 4 |
書き込み(w) | 2 |
実行(x) | 1 |
例えば、次のような権限を考えます。
ユーザー | 読み込み(r) | 書き込み(w) | 実行(x) |
---|---|---|---|
所有者 | ● | ● | ● |
グループ | ● | × | ● |
その他 | ● | × | × |
この場合、それぞれの数値は次のようになります。
ユーザー | 権限 | 式 |
---|---|---|
所有者 | 7 | r(4)+w(2)+x(1) |
グループ | 5 | r(4)+x(1) |
その他 | 4 | r(4) |
そして、『所有者→グループ→その他』の順番で数値を並べると数字書式の権限になります。
754
逆に数値から逆算して権限を読み解くことも可能です。
例えば、初めの例の740
は次のように解釈できます。
ユーザー | 数値 | 読み込み | 書き込み | 実行 |
---|---|---|---|---|
所有者 | 7 | ● | ● | ● |
グループ | 4 | ● | × | × |
その他 | 0 | × | × | × |
サンプル
権限の追加(アルファベットの書式)
$ ls -l
-rw------- 1 hacker staff 0 8月 29 15:10 memo.txt
___ih_hl_start
$ chmod g+rw memo.txt
___ih_hl_end
$ ls -l
-rw-rw---- 1 hacker staff 0 8月 29 15:10 memo.txt
権限の削除(アルファベットの書式)
$ ls -l
-rw-rw---- 1 hacker staff 0 8月 29 15:10 memo.txt
___ih_hl_start
$ chmod g-rw memo.txt
___ih_hl_end
$ ls -l
-rw------- 1 hacker staff 0 8月 29 15:10 memo.txt
権限の変更(数字の書式)
$ ls -l
-rw------- 1 hacker staff 0 8月 29 15:10 memo.txt
___ih_hl_start
$ chmod 640 memo.txt
___ih_hl_end
$ ls -l
-rw-r----- 1 hacker staff 0 8月 29 15:10 memo.txt
再帰的な変更
$ ls -l
drwxrwxr-x 2 hacker staff 4096 8月 29 15:18 sample
$ ls -l sample
-rw-rw-r-- 1 hacker staff 0 8月 29 15:18 testA.txt
-rw-rw-r-- 1 hacker staff 0 8月 29 15:18 testB.txt
-rw-rw-r-- 1 hacker staff 0 8月 29 15:18 testC.txt
___ih_hl_start
$ chmod -R 700 sample
___ih_hl_end
$ ls -l
drwx------ 2 hacker staff 4096 8月 29 15:18 sample
$ ls -l sample
-rwx------ 1 hacker staff 0 8月 29 15:18 testA.txt
-rwx------ 1 hacker staff 0 8月 29 15:18 testB.txt
-rwx------ 1 hacker staff 0 8月 29 15:18 testC.txt
マニュアル
コマンドの仕様(主な処理やオプション・引数など)は環境により異なる場合がございます。
利用環境での仕様は『コマンドのマニュアルを表示する』manコマンド等で確認しましょう。